ساخت اسکرول به بالا (scroll to top) با جاوا اسکریپت

اسکرول به بالا جاوا اسکریپت – با کمک جاوا اسکریپت و بدون هیچ کتابخانه ای می خواهیم اسکرول به بالا را با یک انیمیشن زیبا ایجاد کنیم آن هم به صورت حرفه ای و شیک .
دکمه اسکرول به بالا طوری برنامه نویسی می کنیم زمانی که مقداری به پایین صفحه آمد دکمه چرخیده و رنگ کم رنگ آن پر رنگ شده و آماده اسکرول باشد .
دموی برنامه
فایل index.html
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>Rapidcode.iR - سورس کد</title>
<link rel="stylesheet" href="static/css/main.css">
</head>
<body>
<div class="container">
<a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a>
<div class="scroll-top"></div>
<section class="content content-1"></section>
<section class="content content-2"></section>
<section class="content content-3"></section>
<section class="content content-4"></section>
</div>
<script src="static/js/app.js"></script>
</body>
</html>
اسکریپت app.js
// DOM
const scrollToTopDOM = document.getElementsByClassName('scroll-top')[0];
let scrollToTopDOMActive = null;
// property
const maxDegreeRotate = 180;
let isScrolling = false;
// set handlers
window.onscroll = windowOnScrollHandler;
scrollToTopDOM.onclick = scrollToTopDOMClickHandler;
// handlers
function windowOnScrollHandler(event) {
const thisElement = this;
const offsetScrollY = parseInt(thisElement.scrollY);
let finallDegreeRotate = offsetScrollY / 8;
if (maxDegreeRotate < finallDegreeRotate) {
finallDegreeRotate = maxDegreeRotate;
if (!isScrolling) {
scrollToTopDOM.classList.add('active');
}
} else {
scrollToTopDOM.classList.remove('active');
}
scrollToTopDOM.style.transform = `rotate(${finallDegreeRotate}deg)`;
}
function scrollToTopDOMClickHandler(event) {
if (!isScrolling && scrollToTopDOM.classList.contains("active") && 0 < window.scrollY) {
isScrolling = true;
scrollToTopDOM.classList.remove('active');
scrollToTopDOMScrollAnimation();
}
}
function scrollToTopDOMScrollAnimation(){
if(window.scrollY <= 0){
isScrolling = false;
return false;
}
window.scrollBy(0, -50);
setTimeout(scrollToTopDOMScrollAnimation, 1000 / 60);
}
استایل برنامه با main.css
.content {
width: 100%;
height: 1200px;
background-color: gray;
}
.content-1 {
background-color: cyan;
}
.content-2 {
background-color: tomato;
}
.content-3 {
background-color: lime;
}
.content-4 {
background-color: magenta;
}
.scroll-top {
width: 60px;
height: 60px;
background-image: url(../img/arrow.png);
background-size: 43px;
background-position: center;
background-repeat: no-repeat;
position: fixed;
right: 15px;
bottom: 15px;
z-index: 15;
cursor: pointer;
opacity: 0.5;
}
.scroll-top.active{
opacity: 1;
}
ارسال نظر